const path = require('path')
const { createApiJs, createZustandJs } = require('chenms_auto_create_file_plus')
const commonJson = {
  hostname: '127.0.0.1',
  port: 4523,
  path: '/export/openapi?projectId=3440180&specialPurpose=openapi-generator',

  //   hostname: '39.106.196.57',
  //   port: 3000,
  //   path: '/api/open/plugin/export-full?type=json&pid=150&status=all&token=9e5b30f82c324b31b4826cd54593a608a7301326e0e65e8948b313cc02808980',
  /**
   * 自动生成文件的工具,目前只支持apifox跟yapi
   */
  interfaceType: 'apifox',
  //   interfaceType: 'yapi',
  /**
   * 不自动生成接口的url,这个字段主要用来过滤不想生成接口的url
   */
  excludeList: ['/send/sms'],
  /**
   * 对path进行处理的回调(如果有其他特殊符号要记得自己处理下)
   * 这个要处理成什么样子完全由自己决定
   * 不设置的话会默认返回小驼峰, 如:参数path为 /my/list/detailed的接口 会默认返回 myListDetailed
   * 注意:1.这个function的返回值只能是字符串,如果返回其他类型的则会返回默认设置
   *      2.如果直接返回pathTitle也会返回默认设置
   * @author chenms
   * @param {String} pathTitle 接口的url
   */
  formatePathCb: function (pathTitle, methods, json) {
    return pathTitle.replace(/\/|\-|\_|\{|\}/g, '') + 'abc' + methods
  },
  /**
   * 对生成的文件名称进行处理
   * 不设置的话会默认返回 `${pathTitle}`名称
   * 注意:1.这个function的返回值只能是字符串,如果返回其他类型的则会返回默认设置
   *      2.如果直接返回pathTitle也会返回默认设置
   */
  formateFileNameCb: function (pathTitle) {
    return pathTitle.split('--')[1]
  }
}
createApiJs({
  ...commonJson,
  /**
   * 生成文件的根目录名称路径
   */
  createPath: path.resolve(__dirname, '../src/api'),
  /**
   * 头部需要引入的插件
   */
  topTemplate: `import hyRequest from "@/service/index"`,

  /**
   * 对生成的api里的body进行处理(必填)
   * 返回值必须是字符串类型
   * 不填或者返回空的话会默认填入 request.${methods.toLowerCase()}("${url}", data)
   * @author chenms
   * @param {String} methods 接口的请求方式
   * @param {String} url 接口的url
   */
  formateApiBodyCb: function (methods, url) {
    return `hyRequest.${methods.toLowerCase()}("${url}", data);`
  }
})

createZustandJs({
  ...commonJson,
  /**
   * 生成文件的根目录名称路径
   */
  createPath: path.resolve(__dirname, '../src/zustand'),
  /**
   * 导入api目录的前缀
   */
  apiPrefix: '@/api'
})
